#!/bin/bash
# Script para rodar a simulação n vezes (onde n é o primeiro argumento da linha de comando)

# Descrição do experimento:
# Simulação de uma rede que rastreia um alvo muito rápido. O alvo, na verdade, simula envios de mensagens de áreas aleatórias da rede para o sink. Aqui não há interesse nenhum na precisão do rastreamento. O que importa é o tempo de vida da rede e a porcentagem de mensagens que chegaram, de fato, ao sink

# Sugestão: para executar isto em várias máquinas remotas, utilize o sshc (cluster ssh)
dt=`date +%d%m%y%H%M%S`

#Parâmetros da Simulação
s_range=50
size=400
r_range=100
total_rounds=100000
idle=0.00004 #mesma coisa que o enabled
tx=0.000064
rx=0
standby=0.0000008
#mobility=projects.defaultProject.models.mobilityModels.RandomWayPoint #Tem que ser o nome inteiro
mobility=projects.defaultProject.models.mobilityModels.CorrelatedRandomWalk #Tem que ser o nome inteiro

#Assim um conjunto de simulacoes sempre roda com o mesmo random seed
fixedSeed=`rand -M 9999999999`
seed="useFixedSeed=true fixedSeed=$fixedSeed"
#tipo="-batch"
date >> log$dt
for i in `seq 1 $1`; do
	for nodes in 1024; do #128 256 512 1024; do
		for node in  "ufam:GAFNode"; do #"ufam:OGDCNode" "ufam:GAFNode" "ufam:A3ModifiedNode" ; do
			for alg in "Localization/Algorithm/name=DPE"; do #"Localization/Algorithm/name=DPE" "Localization/Algorithm/name=RPE" "" ; do
				nice -19 ./sinalgo $tipo -project ufam -gen $nodes $node Random C=UDG E=RealisticConsumptionModel -overwrite dimensions=2 dimX=$size dimY=$size dimZ=2 UDG/rMax=$r_range $alg RPE/Beacons/percentage=0.25 RPE/MinReferences/number=4 RPE/MaxReferences/number=10 RPE/MaxResidual/number=10 Noise/Mean/percentage=0.1 Noise/Variance/percentage=0.01 EnergyConsumption/joulesPerByteRx=$rx EnergyConsumption/joulesPerByteTx=$tx EnergyConsumption/joulesEnabled=$idle EnergyConsumption/joulesStandby=$standby sensorRange=$s_range Target/paintTrace=true RandomWayPoint/Speed/Distribution=Gaussian RandomWayPoint/WaitingTime/Distribution=Gaussian randomwaypoint/speed/mean=2 randomwaypoint/speed/variance=1 randomwaypoint/waitingtime/mean=0 randomwaypoint/waitingtime/variance=0 logToTimeDirectory=true tracking/targetenabled=true DPE/BeaconsStructureDistanceFromCentralPoint/number=5 DensityControl/RoundLength=7500 simulationLength=$total_rounds target/MobilityModel=$mobility $seed CorrelatedRandomWalk/ml=0.2 CorrelatedRandomWalk/cp=0.999 Coverage/k=3 > lastExecution 2>&1
			sleep 2;
			done;
		done;
	done;
done;
date >> log$dt
